#ifndef BORWEIN_H
#define BORWEIN_H

#include <gmp.h>
#include <stdio.h>
#include <math.h>
#include <pthread.h>


// strcut para passar os valores para thread
typedef struct str_data {
	int number_iterate;
} data;

// variavel global para a execucao paralela
static mpf_t pa, py, pt1, pt2, pt3, pt4, pt5, pt6, ppi_anterior, ppi_atual;

// barreiras para o controle de execucao das dependencias das pthreads
static pthread_barrier_t bar1, bar2, bar3, bar4;


// calcula o valor pi com execucao sequencial
void calculationPiSeqBorwein();

// calcula o valor pi com execucao paralela
void calculationPiParBorwein();

#endif
